def data_window(lst, window_size):
    """
    生成列表的滑动窗口迭代器

    参数:
        lst: 输入列表
        window_size: 窗口大小

    返回:
        生成器，每次产生一个窗口内的元素列表

    异常:
        如果窗口大小小于1或大于列表长度，抛出ValueError
    """
    if window_size < 1:
        raise ValueError("窗口大小必须大于0")
    if window_size > len(lst):
        raise ValueError("窗口大小不能超过列表长度")

    # 生成所有可能的窗口
    n=len(lst) - window_size + 1
    for i in range(n):
        yield lst[i:i + window_size]


# 使用示例
if __name__ == "__main__":
    # 示例1：基本用法
    my_list = [1, 2, 3, 4, 5, 6, 7]
    for window in data_window(my_list, 2):
        print(window)
    # 输出:
    # [1, 2, 3]
    # [2, 3, 4]
    # [3, 4, 5]
    # [4, 5, 6]
    # [5, 6, 7]

    # 示例2：处理字符串列表
    str_list = ["a", "b", "c", "d", "e"]
    windows = list(data_window(str_list, 2))
    print(windows)  # 输出: [['a', 'b'], ['b', 'c'], ['c', 'd'], ['d', 'e']]